﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaCommerce.ABM_Rol;
using FrbaCommerce.Abm_Cliente;
using FrbaCommerce.Abm_Empresa;
using FrbaCommerce.Abm_Visibilidad;
using FrbaCommerce.Calificar_Vendedor;
using FrbaCommerce.Facturar_Publicaciones;
using FrbaCommerce.Historial_Cliente;
using FrbaCommerce.Comprar_Ofertar;
using FrbaCommerce.Listado_Estadistico;
using System.Data.SqlClient;
using FrbaCommerce.Generar_Publicacion;
using FrbaCommerce.Gestion_de_Preguntas;

namespace FrbaCommerce
{
    public partial class frm_menu : Form
    {
        public frm_menu()
        {
            InitializeComponent();

            btn_abmRol.Visible = false;
            btn_abmCliente.Visible = false;
            btn_abmEmpresa.Visible = false;
            btn_abmVisibilidad.Visible = false;
            btn_generarPublicacion.Visible = false;
            btn_editarPublicacion.Visible = false;
            btn_gestionDePreguntas.Visible = false;
            btn_calificarAlVendedor.Visible = false;
            btn_miHistorial.Visible = false;
            btn_facturarPublicaciones.Visible = false;
            btn_comprarOfertar.Visible = false;
            btn_listadoEstadistico.Visible = false;
        }

        private void frm_menu_Load(object sender, EventArgs e)
        {
            /*Para Ocultar los botones, ver mas abajo...*/
            lbl_error_calficacion.Visible = false;
            BaseDeDatos baseDeDatos = BaseDeDatos.Instance;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "LOS_GDDES.SP_TRAER_FUNCIONALIDADES_X_ROL";
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Parameters.AddWithValue("id_rol", baseDeDatos.idRol);
            DataTable dt_funcionalidades = baseDeDatos.consulta(sqlCommand);
            this.habilitarFuncionalidades(dt_funcionalidades);
        }

        private void habilitarFuncionalidades(DataTable dt_funcionalidades)
        {
            foreach (DataRow r_funcionalidad in dt_funcionalidades.Rows)
            {
                if (r_funcionalidad.Field<string>("NOMBRE") == "ABM Rol")
                    btn_abmRol.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "ABM de Cliente")
                    btn_abmCliente.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "ABM de Empresa")
                    btn_abmEmpresa.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "ABM Visibilidad Publicación")
                    btn_abmVisibilidad.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Generar Publicación")
                    btn_generarPublicacion.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Editar Publicación")
                    btn_editarPublicacion.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Gestión de preguntas")
                    btn_gestionDePreguntas.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Calificar al Vendedor")
                    btn_calificarAlVendedor.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Historial del Cliente")
                    btn_miHistorial.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Facturar Publicaciones")
                    btn_facturarPublicaciones.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Comprar/Ofertar")
                    btn_comprarOfertar.Visible = true;
                if (r_funcionalidad.Field<string>("NOMBRE") == "Listado Estadístico")
                    btn_listadoEstadistico.Visible = true;
            }

            if (gb_admin.Controls.OfType<Button>().All<Button>(button => button.Visible == false))
                gb_admin.Visible = false;
            if (gb_general.Controls.OfType<Button>().All<Button>(button => button.Visible == false))
                gb_general.Visible = false;
            if (gb_usuario.Controls.OfType<Button>().All<Button>(button => button.Visible == false))
                gb_usuario.Visible = false;
    
        }

        private void verificar_calificaciones()
        {
            BaseDeDatos baseDeDatos = BaseDeDatos.Instance;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "LOS_GDDES.SP_VERIFICAR_CALIFICACIONES";
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Parameters.AddWithValue("id_usuario", baseDeDatos.idUsuario);
            DataTable calificaciones = baseDeDatos.consulta(sqlCommand);
            int cal = calificaciones.Rows[0].Field<int>("CANT_CALIFICACIONES");

            if (cal > 4)
            {
                btn_comprarOfertar.Visible = false;
                lbl_error_calficacion.Visible = true;
            }
            else
            {
                btn_comprarOfertar.Visible = true;
                lbl_error_calficacion.Visible = false;
            }
        }

        private void btn_abmRol_Click(object sender, EventArgs e)
        {
            frm_roles frm_roles = new frm_roles();
            frm_roles.ShowDialog();
        }

        private void btn_abmCliente_Click(object sender, EventArgs e)
        {
            frm_clientes frm_clientes = new frm_clientes();
            frm_clientes.ShowDialog();
        }

        private void btn_abmEmpresa_Click(object sender, EventArgs e)
        {
            frm_empresas frm_empresas = new frm_empresas();
            frm_empresas.ShowDialog();
        }

        private void btn_abmVisibilidad_Click(object sender, EventArgs e)
        {
            frm_visibilidades frm_visibilidades = new frm_visibilidades();
            frm_visibilidades.ShowDialog();
        }

        private void btn_generarPublicacion_Click(object sender, EventArgs e)
        {
            frm_generarPublicacion frm_generarPublicacion = new frm_generarPublicacion();
            frm_generarPublicacion.ShowDialog();
        }

        private void btn_editarPublicacion_Click(object sender, EventArgs e)
        {
            frm_misPublicaciones frm_editarMisPublicaciones = new frm_misPublicaciones();
            frm_editarMisPublicaciones.ShowDialog();
        }

        private void btn_calificarAlVendedor_Click(object sender, EventArgs e)
        {
            frm_misComprasOfertas frm_misComprasOfertas = new frm_misComprasOfertas();
            frm_misComprasOfertas.ShowDialog();
        }

        private void btn_gestionDePreguntas_Click(object sender, EventArgs e)
        {
            frm_gestionDePreguntas frm_gestionDePreguntas = new frm_gestionDePreguntas();
            frm_gestionDePreguntas.ShowDialog();
        }

        private void btn_miHistorial_Click(object sender, EventArgs e)
        {
            frm_historialCliente frm_historialCliente = new frm_historialCliente();
            frm_historialCliente.ShowDialog();
        }

        private void btn_facturarPublicaciones_Click(object sender, EventArgs e)
        {
            frm_facturarPublicaciones frm_facturarPublicaciones = new frm_facturarPublicaciones();
            frm_facturarPublicaciones.ShowDialog();
        }

        private void btn_comprarOfertar_Click(object sender, EventArgs e)
        {
            frm_publicaciones frm_publicaciones = new frm_publicaciones();
            frm_publicaciones.ShowDialog();
        }

        private void btn_listadoEstadistico_Click(object sender, EventArgs e)
        {
            frm_listadoEstadistico frm_listadoEstadistico = new frm_listadoEstadistico();
            frm_listadoEstadistico.ShowDialog();
        }

        private void btn_salir_Click(object sender, EventArgs e)
        {
            this.Close();   
        }

        private void ll_cambiarContrasenia_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frm_cambiarContrasenia frm_cambiarContrasenia = new frm_cambiarContrasenia();
            frm_cambiarContrasenia.ShowDialog();
        }

        private void frm_menu_Activated(object sender, EventArgs e)
        {
            if(BaseDeDatos.Instance.idRol == 1)
                this.verificar_calificaciones();
        }
    }
}